package background

import (
	"clouds.lgb24kcs.cn/controllers/background/request"
	"clouds.lgb24kcs.cn/errorx"
	"clouds.lgb24kcs.cn/global"
	"clouds.lgb24kcs.cn/models"
	"clouds.lgb24kcs.cn/utils"
	"fmt"
	"github.com/gin-gonic/gin"
	"os"
	"strings"
	"time"
)

type CarouselUpdate struct {
}

var CarouselUpdateApi CarouselUpdate

func (u *CarouselUpdate) Update(c *gin.Context, req request.UpdateCarouselReq, userId int64) {
	file, _ := c.FormFile("carousel")
	dir, _ := os.Getwd()
	saveFileDir := dir + global.APP.Configuration.Server.Upload + "/carousel"
	FILE_NAME := strings.Split(file.Filename, ".")[len(strings.Split(file.Filename, "."))-2]
	/*
		先将time.Now().Format(time.DateTime)生成出来的字符串时间中的空格替换成“-”
		再将time.Now().Format(time.DateTime)秒中的":"替换成“-”
	*/
	new_time := strings.Replace(strings.Replace(time.Now().Format(time.DateTime), ":", "-", -1), " ", "-", -1) // 生成当前时间，防止多用户同一时间上传
	err := c.SaveUploadedFile(file, saveFileDir+"/"+FILE_NAME+"-"+new_time+"."+strings.Split(file.Filename, ".")[len(strings.Split(file.Filename, "."))-1])
	if err != nil {
		fmt.Println(err)
	}
	carousel := models.Carousel{}
	tx := global.APP.DB.Model(&carousel).Where("id=? and user_id=?", req.ID, userId).Updates(models.Carousel{
		CarouselName: file.Filename,
		URL: "http://" + c.RemoteIP() + ":" + global.APP.Configuration.Server.Port + "/static/carousel" + "/" +
			FILE_NAME + "-" + new_time + "." + strings.Split(file.Filename, ".")[len(strings.Split(file.Filename, "."))-1], // 拼接url地址
		Sort: req.Sort,
	})
	if tx.Error != nil {
		global.APP.Log.Error(fmt.Sprintf("轮播图更新失败：%s", tx.Error.Error()))
		utils.Fail(c, errorx.CarouselUpdate, fmt.Sprintf("轮播图更新失败：%s", tx.Error.Error()))
	} else {
		utils.Success(c, 0, "更新成功")
	}
}
